package com.fh.db;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * @Author qiujunda
 * @Date 15/05/2020
 * @Description
 */
public interface DbSource {

    /**
     * @author qiujunda
     * @description 获取数据源的分页sql
     * @date 09/10/2020 16:38
     * @param sql
     * @param offset
     * @param limit
     * @return java.lang.String
     */
    String getPageSql(String sql, int offset, int limit);

    /**
     * @author qiujunda
     * @description  获取数据库对象集合
     * @date 09/10/2020 16:33
     * @return com.fh.db.DbSchema
     */
    DbSchema getSchema();

    /**
     * @author qiujunda
     * @description  初始化数据源
     * @date 09/10/2020 16:32
     * @param dbTypeCode
     * @param url
     * @param userName
     * @param password
     * @param driverName
     * @return void
     */
    void initSource(String dbTypeCode, String url, String userName, String password, String driverName);

    /**
     * @author qiujunda
     * @description  获取数据源用户名
     * @date 09/10/2020 16:32
     * @return java.lang.String
     */
    String getUserName();

    Connection getConnection() throws ClassNotFoundException, SQLException;

    /**
     * @author qiujunda
     * @description 获取sql池
     * @date 09/10/2020 16:33
     * @return com.fh.db.SqlSet
     */
    SqlSet getSqlSet();

}
